লারাভেল ভ্যালিডেশন একটি শক্তিশালী বৈশিষ্ট্য, যা ব্যবহারকারীর ইনপুট সঠিক ও নিরাপদ নিশ্চিত করতে সহায়তা করে। আসুন প্রতিটি ফিচারকে বিস্তারিতভাবে উদাহরণসহ আলোচনা করি।
ভ্যালিডেশন একটি গুরুত্বপূর্ণ প্রক্রিয়া, যা ইনপুট ডেটা যাচাই করে। এটি ব্যবহারকারীদের কাছ থেকে সঠিক ডেটা সংগ্রহে সাহায্য করে এবং নিরাপত্তা বাড়ায়।
এটি শুরু করতে হলে, প্রথমে একটি রাউট তৈরি করতে হবে যা ফর্ম ডেটা প্রক্রিয়া করবে।
রাউট নির্ধারণ করা
Route::post('/submit', [MyController::class, 'store']);
কন্ট্রোলার তৈরি করা
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class MyController extends Controller
{
public function store(Request $request)
{
// ভ্যালিডেশন লজিক এখানে হবে
}
}
ভ্যালিডেশন লজিক সাধারণত কন্ট্রোলারের store
মেথডে লেখা হয়।
public function store(Request $request)
{
$validatedData = $request->validate([
'name' => 'required|max:255',
'email' => 'required|email',
]);
// প্রাপ্ত ডেটা প্রক্রিয়া
}
যদি ইনপুট ভ্যালিডেশন ব্যর্থ হয়, লারাভেল স্বয়ংক্রিয়ভাবে ত্রুটি তথ্য পাঠাবে। Blade টেমপ্লেটে এটি প্রদর্শনের জন্য নিচের কোড ব্যবহার করুন:
@if ($errors->any())
<div>
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
যখন ভ্যালিডেশন ব্যর্থ হয়, পূর্ববর্তী ইনপুটগুলি ফিরে আনতে old()
ফাংশন ব্যবহার করতে পারেন।
<input type="text" name="name" value="{{ old('name') }}">
কিছু ফিল্ড অপশনাল হলে, সেগুলোর জন্য nullable
নিয়ম ব্যবহার করুন:
'address' => 'nullable|max:255',
লারেরভেল JSON রেসপন্স হিসাবে ভ্যালিডেশন ত্রুটি প্রদান করে। যদি AJAX কল হয়, তবে JSON ফরম্যাটে ত্রুটি তথ্য পাবেন।
{
"message": "The given data was invalid.",
"errors": {
"name": ["The name field is required."]
}
}
ফর্ম রিকোয়েস্ট ব্যবহারের জন্য একটি নতুন ক্লাস তৈরি করুন।
ফর্ম রিকোয়েস্ট তৈরি করা
php artisan make:request StoreUserRequest
অনুমোদন
public function authorize()
{
return true; // বা আপনার কাস্টম অনুমোদন লজিক
}
ত্রুটি বার্তা কাস্টমাইজ করা
public function messages()
{
return [
'name.required' => 'নাম প্রয়োজন।',
];
}
protected function prepareForValidation()
{
$this->merge([
'name' => trim($this->name),
]);
}
$validator = Validator::make($data, [
'name' => 'required|max:255',
]);
ডিফল্টভাবে, যদি ভ্যালিডেশন ব্যর্থ হয়, লারাভেল স্বয়ংক্রিয়ভাবে আগের পৃষ্ঠায় রিডাইরেক্ট করে।
নামকৃত ত্রুটি ব্যাগের মাধ্যমে আপনি ত্রুটি গুলিকে গ্রুপ করতে পারেন।
return redirect()->back()->withErrors($validator, 'login');
আপনার কাস্টম বার্তা ল্যাঙ্গুয়েজ ফাইলের মাধ্যমে নির্ধারণ করতে পারেন।
// resources/lang/en/validation.php
return [
'custom' => [
'name' => [
'required' => 'নাম ক্ষেত্রটি প্রয়োজন।',
],
],
];
লারাভেল বিভিন্ন ভ্যালিডেশন নিয়ম প্রদান করে, যেমন required
, email
, max
, min
, unique
, ইত্যাদি।
$rules['address'] = 'required_if:status,active';
আপনি ইনপুট অ্যারে ভ্যালিডেট করতে পারেন।
$rules = [
'items.*.name' => 'required|max:255',
];
নেস্টেড ইনপুটগুলির জন্য ভ্যালিডেশন:
$rules = [
'products.*.options.*.value' => 'required',
];
আপনি ত্রুটি বার্তা কাস্টমাইজ করতে পারেন সূচক এবং অবস্থানের মাধ্যমে।
আপনার ফাইল আপলোডের জন্য ভ্যালিডেশন নিয়ম যুক্ত করতে পারেন।
$rules = [
'file' => 'required|file|mimes:jpg,png|max:2048', // 2MB এর বেশি নয়
];
পাসওয়ার্ডের জন্য শক্তিশালী ভ্যালিডেশন:
$rules = [
'password' => 'required|min:8|confirmed',
];
আপনার কাস্টম নিয়ম তৈরি করতে পারেন:
Validator::extend('custom_rule', function ($attribute, $value, $parameters, $validator) {
return $value === 'custom_value';
});
আপনার ভ্যালিডেশন নিয়মগুলি Rule
অবজেক্ট ব্যবহার করে কাস্টমাইজ করতে পারেন।
use Illuminate\Validation\Rule;
$rules = [
'email' => [
'required',
'email',
Rule::unique('users')->ignore($userId),
],
];
ভ্যালিডেশন লজিকে ক্লোজার ব্যবহার করে শর্ত যুক্ত করতে পারেন।
$validator = Validator::make($data, [
'name' => [
'required',
function ($attribute, $value, $fail) {
if ($value === 'admin') {
$fail('নামটি admin হতে পারে না।');
}
},
],
]);
লারাভেলের মধ্যে ইম্প্লিসিট রুলস তৈরি করতে পারেন। উদাহরণস্বরূপ, ইনপুটের প্রয়োজনীয়তা নিশ্চিত করতে।
লারাভেল ভ্যালিডেশন একটি শক্তিশালী ফিচার, যা ডেটা নিরাপত্তা ও সঠিকতা নিশ্চিত করে। এই বৈশিষ্ট্যগুলি ব্যবহার করে আপনার অ্যাপ্লিকেশনকে আরও শক্তিশালী এবং ব্যবহারকারী-বান্ধব করতে পারেন। কোনো বিশেষ ফিচার বা উদাহরণের উপর আরও বিস্তারিত জানতে চাইলে জানাবেন!
Read more